package com.cmc.cloud.cmclink.doc.service;

import java.util.*;
import javax.validation.*;

import com.cmc.cloud.cmclink.doc.vo.voyagebsacbatemplatevo.VoyageBsaCbaTemplateBaseVO;
import com.cmc.cloud.cmclink.doc.vo.voyagebsacbatemplatevo.VoyageBsaCbaTemplateCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.voyagebsacbatemplatevo.VoyageBsaCbaTemplatePageReqVO;
import com.cmc.cloud.cmclink.doc.vo.voyagebsacbatemplatevo.VoyageBsaCbaTemplateUpdateReqVO;
import com.cmc.cloud.cmclink.doc.vo.voyagebsacbatemplatevo.VoyageCbaTemplateHistoryVO;
import com.cmes.framework.common.pojo.PageResult;
import com.cmc.cloud.cmclink.doc.entity.VoyageBsaCbaTemplateDO;

/**
 * 分类舱位自动批舱模版 Service 接口
 *
 * @author 集运管理员
 */
public interface VoyageBsaCbaTemplateService {

    /**
     * 创建分类舱位自动批舱模版
     *
     * @param createReqVO 创建信息
     */
    void createVoyageBsaCbaTemplate(@Valid VoyageBsaCbaTemplateCreateReqVO createReqVO);

    /**
     * 更新分类舱位自动批舱模版
     *
     * @param updateReqVO 更新信息
     */
    void updateVoyageBsaCbaTemplate(@Valid VoyageBsaCbaTemplateUpdateReqVO updateReqVO);

    /**
     * 删除分类舱位自动批舱模版
     *
     * @param id 编号
     */
    void deleteVoyageBsaCbaTemplate(Long id);

    /**
     * 获得分类舱位自动批舱模版
     *
     * @param id 编号
     * @return 分类舱位自动批舱模版
     */
    VoyageBsaCbaTemplateDO getVoyageBsaCbaTemplate(Long id);

    /**
     * 获得分类舱位自动批舱模版列表
     *
     * @param ids 编号
     * @return 分类舱位自动批舱模版列表
     */
    List<VoyageBsaCbaTemplateDO> getVoyageBsaCbaTemplateList(Collection<Long> ids);

    /**
     * 获得分类舱位自动批舱模版分页
     *
     * @param pageReqVO 分页查询
     * @return 分类舱位自动批舱模版分页
     */
    PageResult<VoyageBsaCbaTemplateDO> getVoyageBsaCbaTemplatePage(VoyageBsaCbaTemplatePageReqVO pageReqVO);

    /**
     * 获取已配置cba 信息的模板
     *
     * @param bsaCbaTemplateBaseVO
     * @return List<VoyageBsaCbaTemplateDO>
     */
    List<VoyageBsaCbaTemplateDO> getTemplateExistCba(VoyageBsaCbaTemplateBaseVO bsaCbaTemplateBaseVO);

    /**
     *  从历史模板信息复制
     * @param templateHistoryVO
     * @return void
     */
    void copyFromTemplateHistory(@Valid VoyageCbaTemplateHistoryVO templateHistoryVO);
}
